package scau.mis4.chanyulin.base.utils;

import java.io.*;
import java.math.BigDecimal;

/**
 * Created by cyl on 2017/5/11
 */
public class FileUtils {

    /**
     * 将非pdf文件地址转为pdf文件地址
     * @param url
     * @return
     */
    public static String urlToPDF(String url) {
        return url.substring(0, url.lastIndexOf(".")) + ".pdf";
    }

    /**
     * 获取文件后缀
     * @param fileName 文件名
     */
    public static String getFileExtensions(String fileName) {
        if (fileName == null)
            return null;
        else if (fileName.contains("."))
            return fileName.substring(fileName.lastIndexOf("."));
        else
            return null;
    }

    /**
     * 保存文件
     * @param inputStream
     * @param path
     * @param fileName
     * @return
     */
    public static boolean saveFile(InputStream inputStream, String path, String fileName) {

        OutputStream os = null;
        try {
            // 1K的数据缓冲
            byte[] bs = new byte[1024];
            // 读取到的数据长度
            int len;
            // 输出的文件流保存到本地文件

            File tempFile = new File(path);
            if (!tempFile.exists()) {
                tempFile.mkdirs();
            }
            os = new FileOutputStream(tempFile.getPath() + File.separator + fileName);
            // 开始读取
            while ((len = inputStream.read(bs)) != -1) {
                os.write(bs, 0, len);
            }

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            // 完毕，关闭所有链接
            try {
                os.close();
                inputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return true;
    }

    /**
     * 删除某个文件
     * @param filePath
     * @return
     */
    public static boolean deleteFile(String filePath) {
        File file = new File(filePath);
        if (file.exists())
            if (file.delete())
                return true;
        return false;
    }

    /**
     * @Description long转M
     * @param bytes
     * @return
     */
    public static double bytesToMbs(long bytes) {
        BigDecimal filesize = new BigDecimal(bytes);
        BigDecimal megabyte = new BigDecimal(1024 * 1024);
        double returnValue = filesize.divide(megabyte, 2, BigDecimal.ROUND_UP).doubleValue();
        return returnValue;
    }

}
